home *** CD-ROM | disk | FTP | other *** search
- PROGRAM STOCKTRADER ;
- {This stocktrading program is rewritten from the basic STOCKTRADER program
- copywrited by DSF Associates, 1984}
- CONST
- SELL:ARRAY[0..7] OF BYTE =
- ($AA,$55,$AA,$55,$AA,$55,$AA,$55);
- BUY:ARRAY[0..7] OF BYTE =($FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF);
- TICKER:STRING [125]='T CLO ANT MK LPT KO IBM JP N DD ';
- TICKER1:STRING [50]=' FWC HCI ACT GLE BC ';
- TICKER2:STRING [125]=' 23 1/8 19 3/4 15 7/8 10 7/8 13 1/4 71 3/8 132 45 1/2 153 1/8 61 ';
- TICKER3:STRING [50]=' 13 7/8 18 1/8 7 1/4 13 1/4 37 1/4';
- TYPE
- NAME1=STRING[7];
- DATE1=STRING[8];
- DATER=STRING[8];
- CLAIM=CHAR;
- VAR
- X,Y,X1,Y1,X2,Y2,X3,Y3,STEPPER,COLR,DOWSW,COLORSW,DATEM,DATED,DATEY,CANCEL1,CANCEL,CANCEL2,CANCEL3,LOCATEY :INTEGER;
- CHORD1,CHORD2,DISCLAIM,TOP,DOW,UP,DOWN,BACKUP,STARTSTR,ENDSTR,SHORTCOLOR,UPDATECOUNT,RESTART,FLAG3 :INTEGER;
- VOLUMEST,SKIP,SKIP1,RED,YELLOW,WHITE,BLUE,CYAN,LTMAGENTA,MAGENTA,GRAY,MENUSKIP,STARTER,ERROR,STOP :INTEGER;
- COLORFILL,COLORPAL,TMODE,GREEN,FLAG1,FLAG2,LTGREEN,LTRED,CLOSECOLOR,LONGCOLOR,DATEFLAG,CUT,SPAN,LOCATEX :INTEGER;
- LONG :ARRAY[1..32] OF INTEGER;
- SHORT :ARRAY[1..32] OF INTEGER;
- CHORD :ARRAY[1..32] OF INTEGER;
- PRINT :ARRAY[1..18] OF INTEGER;
- LOW :ARRAY[1..32,1..30] OF REAL;
- HIGH :ARRAY[1..32,1..30] OF REAL;
- CLOSED :ARRAY[1..32,1..30] OF REAL;
- DATE :ARRAY[1..32,1..30] OF DATE1;
- NAME :ARRAY[1..32] OF NAME1;
- VOLUME :ARRAY[1..32,1..30] OF REAL;
- SHORTAVG:ARRAY[1..32,1..30] OF REAL;
- SIGNAL :ARRAY[1..32,1..30] OF INTEGER;
- SIGNALHISTORY :ARRAY[1..32] OF INTEGER;
- LONGAVG :ARRAY[1..32,1..30] OF REAL;
- MONTH :ARRAY[1..12] OF STRING[12];
- CLAIMMARK :CLAIM;
- DATENUM,SCREEN,SCREEN1,COLOR,GO :CHAR;
- STOCKFILE : TEXT;
- DATETEMP :STRING[2];
- ENHANCED,NONENHANCED :STRING[3];
- DOUBLE,NONDOUBLE :STRING[3];
- UNDERLINE,NONUNDERLINE :STRING[3];
- NAMEIT :STRING[12];
- ERASER,FILEWRITE :STRING[79];
- DATEP :DATER;
- STOCK,DAYHIGH,DAYLOW,DAYCLOSE,DAYVOLUME :STRING[7];
- LOWEST,LOWEST1,HIGHEST,HIGHEST1,AVERAGE,DOWPOINT,STARTPT1,STARTPT,GRAPHLINE :REAL;
- GRAPHMID,HIGHVOL,LONGST,SHORTST,SETTER,SETTER1,GRAPHNO1,START,HIGHT,LOWT,CLOSET,VOLUMET
- :REAL;
- {$I GRAPH.P }
- PROCEDURE F3;
- BEGIN
- GOTOXY(1,24);WRITE(ERASER);
- GOTOXY(24,24);WRITE('PRESS F3 TO ESCAPE TO MAIN MENU');
- END;
- PROCEDURE CHANGECOLOR;
- BEGIN
- IF COLOR='Y' THEN BEGIN
- LTMAGENTA:=13;RED:=4;WHITE:=15;GRAY:=7;LTGREEN:=10;LTRED:=12;MAGENTA:=2;CYAN:=1;BLUE:=1;YELLOW:=14;
- COLORPAL:=3;COLORFILL:=1;GREEN:=10;
- GRAPHCOLORMODE;TMODE:=3
- END;
- IF COLOR='N' THEN BEGIN
- LTMAGENTA:=0;RED:=7;WHITE:=15;GRAY:=7;LTGREEN:=15;LTRED:=15;MAGENTA:=3;CYAN:=3;BLUE:=0;YELLOW:=7;
- COLORPAL:=1;COLORFILL:=3;;GREEN:=0;
- GRAPHMODE;TMODE:=2;
- END;
- END;
- PROCEDURE SCREENPRINT;
- BEGIN
- TEXTMODE(TMODE);TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);CLRSCR;
- FLAG1:=0;
- WHILE FLAG1=0 DO BEGIN
- ASSIGN(STOCKFILE,NAMEIT);
- RESET(STOCKFILE);
- FOR Y1:=1 TO 24 DO BEGIN
- READLN(STOCKFILE,FILEWRITE);
- WRITELN(FILEWRITE);
- FILEWRITE:=COPY(FILEWRITE,58,5);
- VAL(FILEWRITE,Y2,Y3);X3:=X3+Y2;
- END;
- READLN(STOCKFILE,SCREEN);
- READLN(STOCKFILE,NAMEIT);
- CLOSE(STOCKFILE);
- FLAG1:=1;
- IF SCREEN<>'P' THEN BEGIN
- GOTOXY(80,25);READ(KBD,GO);
- IF SCREEN='C' THEN BEGIN
- IF (GO=#27) AND KEYPRESSED THEN BEGIN
- READ(KBD,GO);
- IF GO=CHAR(59) THEN BEGIN
- FLAG1:=0;
- END;
- END;
- END;
- CLRSCR;SCREEN:='A';
- END;
- END;
- END;
- PROCEDURE FILLHOLE;
- BEGIN
- IF (UP>0) OR (DOWN>0) THEN BEGIN
- IF COLR=1 THEN BEGIN
- Pattern(BUY);
- FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,CYAN);
- END;
- IF (COLR=2) AND (COLOR='N') THEN BEGIN
- Pattern(SELL);
- FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,3);
- END;
- IF (COLR=2) AND (COLOR='Y') THEN BEGIN
- Pattern(BUY);
- FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,MAGENTA);
- END;
- IF (COLR=3) AND (COLOR='Y') THEN BEGIN
- Pattern(BUY);
- FILLPATTERN(X3+2,Y3-UP,X3-2,Y3+BACKUP,3);
- END;
- END;
- END;
- PROCEDURE DRAWLINE;
- BEGIN
- DRAW(0,Y1,300,Y1,3);
- SKIP:=ROUND((SETTER-SETTER1)*GRAPHMID/8)+1;
- IF SKIP<1 THEN SKIP:=1;
- IF SKIP>25 THEN SKIP:=25;
- IF SETTER1>1999 THEN GRAPHNO1:=SETTER1-2000 ELSE GRAPHNO1:=SETTER1;
- IF SETTER1>999 THEN GRAPHNO1:=SETTER1-1000 ELSE GRAPHNO1:=SETTER1;
- Y1:=SKIP;X1:=38;Y2:=SKIP+1;X2:=40;
- TEXTCOLOR(7);WINDOW(X1,Y1,X2,Y2);GOTOXY(1,1);WRITE(GRAPHNO1:2:0);
- GRAPHWINDOW(0,0,319,199);
- END;
- PROCEDURE HISTORYTOP;
- BEGIN
- CLRSCR;
- TEXTCOLOR(WHITE);
- GOTOXY(2,2);WRITE('STOCK :',NAME[X]);
- IF CLOSED[X,30]>CLOSED[X,29] THEN TEXTCOLOR(LTGREEN);
- IF CLOSED[X,30]<CLOSED[X,29] THEN TEXTCOLOR(LTRED);
- IF CLOSED[X,30]=CLOSED[X,29] THEN TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- IF CLOSED[X,30]>CLOSED[X,29] THEN TEXTCOLOR(15);
- IF CLOSED[X,30]<CLOSED[X,29] THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF CLOSED[X,30]=CLOSED[X,29] THEN TEXTCOLOR(7);
- END;
- GOTOXY(20,2);WRITE('Current Price :');WRITE(CLOSED[X,30]:4:2);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- IF LONGAVG[X,30]>LONGAVG[X,29] THEN TEXTCOLOR(LTGREEN);
- IF LONGAVG[X,30]<LONGAVG[X,29] THEN TEXTCOLOR(LTRED);
- IF LONGAVG[X,30]=LONGAVG[X,29] THEN TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- IF LONGAVG[X,30]>LONGAVG[X,29] THEN TEXTCOLOR(15);
- IF LONGAVG[X,30]<LONGAVG[X,29] THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF LONGAVG[X,30]=LONGAVG[X,29] THEN TEXTCOLOR(7);
- END;
- GOTOXY(54,2);WRITE('Current Average :');WRITE(LONGAVG[X,30]:4:2);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- WRITELN;
- TEXTBACKGROUND(RED);TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- TEXTBACKGROUND(7);TEXTCOLOR(0);
- END;
- GOTOXY(1,3);WRITE(ERASER);
- GOTOXY(1,4);WRITE(' DATE HIGH LOW CLOSE VOLUME SH. AVER LG. AVER ');
- GOTOXY(1,5);WRITELN(ERASER);
- TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
- END;
- PROCEDURE UPDATE;
- BEGIN
- HISTORYTOP;
- FOR Y:=STARTER TO 30 DO BEGIN
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- IF COLOR='N' THEN TEXTCOLOR(7);
- WRITE(' ',DATE[X,Y]:8,' ',HIGH[X,Y]:8:2,' ',LOW[X,Y]:8:2);
- IF Y>1 THEN BEGIN
- IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN TEXTCOLOR(LTGREEN);
- IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN TEXTCOLOR(LTRED);
- IF CLOSED[X,Y]=CLOSED[X,Y-1] THEN TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN TEXTCOLOR(15);
- IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF CLOSED[X,Y]=CLOSED[X,Y-1] THEN TEXTCOLOR(7);
- END;
- END;
- WRITE(' ',CLOSED[X,Y]:8:2);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- IF COLOR='N' THEN TEXTCOLOR(7);
- WRITE(' ',VOLUME[X,Y]:8:0);
- IF Y>1 THEN BEGIN
- IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN TEXTCOLOR(LTGREEN);
- IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN TEXTCOLOR(LTRED);
- IF SHORTAVG[X,Y]=SHORTAVG[X,Y-1] THEN TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN TEXTCOLOR(15);
- IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF SHORTAVG[X,Y]=SHORTAVG[X,Y-1] THEN TEXTCOLOR(7);
- END;
- END;
- WRITE(' ',SHORTAVG[X,Y]:8:2);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- IF COLOR='N' THEN TEXTCOLOR(7);
- IF Y>1 THEN BEGIN
- IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN TEXTCOLOR(LTGREEN);
- IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN TEXTCOLOR(LTRED);
- IF LONGAVG[X,Y]=LONGAVG[X,Y-1] THEN TEXTCOLOR(WHITE);
- IF COLOR='N' THEN BEGIN
- IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN TEXTCOLOR(15);
- IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF LONGAVG[X,Y]=LONGAVG[X,Y-1] THEN TEXTCOLOR(7);
- END;
- END;
- WRITELN(' ',LONGAVG[X,Y]:8:2);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- IF COLOR='N' THEN TEXTCOLOR(7);
- IF Y=18 THEN BEGIN
- GOTOXY(28,25);WRITE('HIT SPACE BAR TO PROCEED');
- SOUND(800);DELAY(400);NOSOUND;GO:=CHR(00);
- WHILE GO<>CHR(32) BEGIN
- READ(KBD,GO);
- IF GO<>CHR(32) THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;
- END;
- END;
- CLRSCR;
- HISTORYTOP;
- END;
- END;
- END;
- PROCEDURE MENU; FORWARD;
- PROCEDURE WRITER;
- BEGIN
- Y:=0;STOCK:='';FLAG3:=0;CANCEL:=0;
- WHILE Y<STOP DO BEGIN
- Y:=Y+1;
- GOTOXY(LOCATEX+Y,LOCATEY);READ(KBD,GO);
- IF (GO=#27) AND KEYPRESSED THEN BEGIN
- WHILE (GO=#27) DO BEGIN
- READ(KBD,GO);
- IF (GO=#59) THEN BEGIN
- NAMEIT:='SCREEN'+SCREEN1+'.DAT';
- SCREENPRINT;
- FLAG3:=1;CLRSCR;
- SCREEN:='M';
- SCREEN1:='A';STOCK:='';GO:=#13;
- END;
- IF (GO=#61) THEN BEGIN
- FLAG3:=1;CLRSCR;
- SCREEN:='M';
- SCREEN1:='A';STOCK:='';GO:=#13;
- END;
- END;
- END;
- IF FLAG3<>1 THEN BEGIN
- IF GO<>CHR(08) THEN BEGIN
- IF GO<>CHR(13) THEN STOCK:=STOCK+GO;
- END;
- IF GO=CHR(08) THEN BEGIN
- CUT:=LENGTH(STOCK);CUT:=CUT-1;
- IF CUT>0 THEN BEGIN
- STOCK:=COPY(STOCK,1,CUT);Y:=Y-2;
- END;
- IF CUT<=0 THEN BEGIN;
- STOCK:='';Y:=0;CUT:=0;
- END;
- END;
- END;
- GOTOXY(54,25);
- IF GO<>CHR(13) THEN WRITE(' ');
- GOTOXY(LOCATEX+1,LOCATEY);WRITE(STOCK);
- IF GO=CHR(13) THEN Y:=STOP;
- IF (GO=CHR(13)) AND (STOCK='') THEN CANCEL:=2;
- IF (GO=CHR(13)) AND (FLAG3=1) THEN CANCEL:=3;
- FLAG3:=0;
- END;
- END;
- PROCEDURE MENU;
- BEGIN
- IF SCREEN<>'J' THEN BEGIN
- TEXTMODE(TMODE);TEXTCOLOR(LTRED);CLRSCR;WINDOW(1,1,80,25);CLRSCR;
- IF COLOR='Y' THEN BEGIN
- PORT[$3D9]:=BLUE
- END;
- GOTOXY(13,1);
- CANCEL:=0;
- WRITELN('[[[[[[[[[[[[[[[[[ THE STOCK TRADER ]]]]]]]]]]]]]]]]]') ;
- WRITELN;TEXTCOLOR(YELLOW);
- IF DATEM>0 THEN BEGIN
- GOTOXY(13,3);WRITE('THE STOCK DATE YOU ARE NOW USING IS - - ');TEXTCOLOR(WHITE);WRITELN(MONTH[DATEM],' ',DATED,',19',DATEY);
- END;
- GOTOXY(33,5);WRITELN('- PORTFOLIO -');GOTOXY(1,6);TEXTCOLOR(WHITE);
- WRITELN('--------------------------------------------------------------------------------');
- GOTOXY(1,8);
- FOR X:=1 TO 8 DO BEGIN
- NAME[4*X-3]:=NAME[4*X-3]+' ';NAME[4*X-2]:=NAME[4*X-2]+' ';NAME[4*X-1]:=NAME[4*X-1]+' ';
- NAME[4*X]:=NAME[4*X]+' ';
- FOR Y:=3 DOWNTO 1 DO BEGIN
- IF NAME[4*X-Y]<>' ' THEN BEGIN
- WRITE(' ',NAME[4*X-Y],' ');
- TEXTCOLOR(YELLOW);
- WRITE(CLOSED[4*X-Y,30]:7:2,' ');
- TEXTCOLOR(WHITE);
- END;
- END;
- IF NAME[4*X]<>' ' THEN BEGIN
- WRITE(' ',NAME[4*X],' ');
- TEXTCOLOR(YELLOW);
- WRITELN(CLOSED[4*X,30]:7:2);
- TEXTCOLOR(WHITE);
- END;
- END;
- GOTOXY(1,17);
- WRITELN('--------------------------------------------------------------------------------');
- GOTOXY(1,18);
- WRITELN(' (A)...Daily Price UPDATE (G)...WRITE TO DISK & return to program');
- WRITELN(' (B)...ADD a stock (H)...SPLIT a stock ');
- WRITELN(' (C)...DELETE a stock (I)...CHANGE monitor or printer defaults ');
- WRITELN(' (D)...GRAPH a stock (J)...MODIFY trading indicators ');
- WRITELN(' (E)...CHANGE the date (K)...Write to disk & EXIT program ');
- WRITELN(' (F)...PRINT 30 day trading sheet (F1)..HELP ');
- WRITELN;
- END;
- SCREEN1:='M';
- WHILE (SCREEN1<'A') OR (SCREEN1>='L') DO BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(21,25);TEXTCOLOR(WHITE+16);WRITE('MAKE');TEXTCOLOR(WHITE);WRITE(' YOUR SELECTION ( ',SCREEN,' )');
- STOP:=1;LOCATEX:=43;LOCATEY:=25;WRITER;
- IF CANCEL<>3 THEN BEGIN
- IF ORD(GO)>90 THEN GO:=CHR(ORD(GO)-32);
- IF GO<>CHR(13) THEN SCREEN:=GO;
- IF SCREEN<>'A' THEN UPDATECOUNT:=0;
- SCREEN1:=SCREEN;
- IF (SCREEN<'A') OR (SCREEN>'L') THEN BEGIN
- SOUND(800);DELAY(500);NOSOUND;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(23,25);TEXTCOLOR(WHITE);WRITE('INPUT ERROR - TRY AGAIN.');
- END;
- IF SCREEN='L' THEN BEGIN
- SCREEN:='M';SCREEN1:='M';
- END;
- END;
- CANCEL:=0;
- END;
- END;
- PROCEDURE STOCKSELECT;
- BEGIN
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;
- WHILE STOCK<>'' DO BEGIN
- Y2:=LENGTH(STOCK);INSERT(' ',STOCK,Y2+1);DELETE(STOCK,8,7);
- FLAG1:=0;
- FOR X:=1 TO TOP DO BEGIN
- IF NAME[X]=STOCK THEN BEGIN
- UPDATECOUNT:=X;FLAG1:=1;
- STOCK:='';
- END;
- END;
- IF FLAG1=0 THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,25);WRITE(' THE STOCK YOU HAVE SELECTED IS NOT CURRENTLY IN THE DATABASE.');DELAY(2000);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(15,25);WRITE('PLEASE MAKE YOUR SELECTION AGAIN ( )');
- LOCATEX:=53;LOCATEY:=25;WRITER;
- END;
- END;
- END;
- PROCEDURE UPDATEMSG;
- BEGIN
- GOTOXY(1,20);WRITELN('ENTER C TO CANCEL THE CURRENT ENTRIES. ENTER D TO DELETE THE LAST ENTRY LISTED.');
- GOTOXY(1,21);WRITELN('ENTER N IF THE STOCK WAS NOT TRADED TODAY. ENTER R TO REVIEW FIRST PAGE HISTORY.');
- GOTOXY(9,22);WRITE('THE DATE YOU ARE USING IS ');
- IF COLOR='N' THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF COLOR='Y' THEN BEGIN
- TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
- END;
- WRITE(DATEM,'/',DATED,'/',DATEY);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- WRITE(' AND THE STOCK IS ');
- IF COLOR='N' THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF COLOR='Y' THEN BEGIN
- TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
- END;
- WRITELN(NAME[X]);
- TEXTCOLOR(WHITE);TEXTBACKGROUND(BLUE);
- END;
- PROCEDURE SIGNALSET;
- BEGIN
- WHILE FLAG1=1 DO BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(12,25);WRITE('DAYS USED FOR THE LONG TERM AVERAGE? ( ',LONG[X],' )');
- SKIP:=0;STOP:=3;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
- IF SKIP>0 THEN LONG[X]:=SKIP;
- SKIP:=0;
- IF LONG[X]>=30 THEN FLAG1:=0;
- IF LONG[X]<30 THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(7,25);WRITE('WARNING!!! LONG TERM AVERAGES LESS THEN 30 DAYS ARE NOT RECOMMENDED.');DELAY(2000);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(9,25);WRITE('DO YOU WISH TO CONTINUE WITH YOUR CURRENT SELECTION (Y/N) ( )');
- GOTOXY(68,25);READ (GO);
- IF (GO='y') OR (GO='Y') THEN FLAG1:=0 ELSE FLAG1:=1;
- END;
- END;
- WHILE FLAG1=0 DO BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(11,25);WRITE('DAYS USED FOR THE SHORT TERM AVERAGE? ( ',SHORT[X],' )');
- LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
- IF SKIP>0 THEN SHORT[X]:=SKIP;
- SKIP:=0;
- IF SHORT[X]>=7 THEN FLAG1:=1;
- IF SHORT[X]<7 THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(7,25);WRITE('WARNING!!! SHORT TERM AVERAGES LESS THEN 7 DAYS ARE NOT RECOMMENDED.');DELAY(2500);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(9,25);WRITE('DO YOU WISH TO CONTINUE WITH YOUR CURRENT SELECTION (Y/N) ( )');
- GOTOXY(69,25);READ (GO);
- IF (GO='y') OR (GO='Y') THEN FLAG1:=1 ELSE FLAG1:=0;
- END;
- END;
- IF FLAG1<>0 THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(17,25);WRITE('DAYS ARE USED FOR CHORD LENGTH? ( ',CHORD[X],' )');
- STOP:=2;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,SKIP,Y3);
- IF SKIP>0 THEN CHORD[X]:=SKIP;
- SKIP:=0;
- IF CHORD[X]=0 THEN CHORD[X]:=1;
- GOTOXY(1,25);WRITE(ERASER);
- END;
- END;
- PROCEDURE STOCKSTART;
- BEGIN
- WHILE FLAG2=0 DO BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S HIGH? ( )');
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,HIGH[X,30],Y3);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S LOW? ( )');
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,LOW[X,30],Y3);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S CLOSE? ( )');
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,CLOSED[X,30],Y3);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(25,25);WRITE('WHAT IS THE STOCK''S VOLUME? ( )');
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;VAL(STOCK,VOLUME[X,30],Y3);
- IF HIGH[X,30]>LOW[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
- IF CLOSED[X,30]>=LOW[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
- IF CLOSED[X,30]<=HIGH[X,30] THEN FLAG2:=1 ELSE FLAG2:=0;
- SHORTAVG[X,30]:=CLOSED[X,30];LONGAVG[X,30]:=CLOSED[X,30];
- STR(DATEM,DATETEMP);
- IF DATEM<10 THEN DATETEMP:=' '+DATETEMP;
- DATE[X,30]:=DATETEMP+'/';
- STR(DATED,DATETEMP);
- IF DATED<10 THEN DATETEMP:=' '+DATETEMP;
- DATE[X,30]:=DATE[X,30]+DATETEMP+'/';
- STR(DATEY,DATETEMP);
- DATE[X,30]:=DATE[X,30]+DATETEMP;
- IF FLAG2=0 THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(20,25);WRITE('ERROR IN ENTRY FIGURES - PLEASE REENTER.');DELAY(2000);
- GOTOXY(1,25);WRITE(ERASER);
- END;
- END;
- FLAG1:=1;SIGNALSET;
- FOR Y:=1 TO 29 DO BEGIN
- DATE[X,Y]:=' ';HIGH[X,Y]:=CLOSED[X,30];LOW[X,Y]:=CLOSED[X,30];
- CLOSED[X,Y]:=CLOSED[X,30];VOLUME[X,Y]:=1;LONGAVG[X,Y]:=CLOSED[X,30];
- SHORTAVG[X,Y]:=CLOSED[X,30];SIGNAL[X,Y]:=3;
- END;
- STOCK:='';
- END;
- BEGIN
- ERASER:=' ';
- ASSIGN(STOCKFILE,'CONFIG.DAT');
- RESET(STOCKFILE);
- READLN(STOCKFILE,COLOR);
- READLN(STOCKFILE,PRINT[1],PRINT[2],PRINT[3]);
- ENHANCED:=CHR(PRINT[1])+CHR(PRINT[2])+CHR(PRINT[3]);
- READLN(STOCKFILE,PRINT[4],PRINT[5],PRINT[6]);
- NONENHANCED:=CHR(PRINT[4])+CHR(PRINT[5])+CHR(PRINT[6]);
- READLN(STOCKFILE,PRINT[7],PRINT[8],PRINT[9]);
- UNDERLINE:=CHR(PRINT[7])+CHR(PRINT[8])+CHR(PRINT[9]);
- READLN(STOCKFILE,PRINT[10],PRINT[11],PRINT[12]);
- NONUNDERLINE:=CHR(PRINT[10])+CHR(PRINT[11])+CHR(PRINT[12]);
- READLN(STOCKFILE,PRINT[13],PRINT[14],PRINT[15]);
- DOUBLE:=CHR(PRINT[13])+CHR(PRINT[14])+CHR(PRINT[15]);
- READLN(STOCKFILE,PRINT[16],PRINT[17],PRINT[18]);
- NONDOUBLE:=CHR(PRINT[16])+CHR(PRINT[17])+CHR(PRINT[18]);
- CLOSE(STOCKFILE);
- CLRSCR;GOTOXY(20,12);WRITELN('THIS PROGRAM NEEDS A GRAPHICS MONITOR.');
- CHANGECOLOR;
- WINDOW(1,1,40,25);
- GraphBackground(BLUE);
- TextColor(YELLOW);
- Palette(COLORPAL);
- GRAPHWINDOW(1,28,320,73);
- Y:=0;
- FOR X:=320 DOWNTO 120 DO BEGIN
- IF Y=20 THEN BEGIN
- Y:=0;CLEARSCREEN;
- DRAW(X,1,X+16,1,3);DRAW(X+16,1,X+16,4,3);DRAW(X+16,4,X+10,4,3);DRAW(X+10,4,X+10,44,3);
- DRAW(X+10,44,X+6,44,3);DRAW(X+6,44,X+6,4,3);DRAW(X+6,4,X,4,3);DRAW(X,4,X,1,3);
- { MAKES T}
- DRAW(X+24,1,X+28,1,3);DRAW(X+28,1,X+28,18,3);DRAW(X+28,18,X+36,18,3);DRAW(X+36,18,X+36,1,3);DRAW(X+36,1,X+40,1,3);
- DRAW(X+40,1,X+40,44,3);DRAW(X+40,44,X+36,44,3);DRAW(X+36,44,X+36,24,3);DRAW(X+36,24,X+28,24,3);DRAW(X+28,24,X+28,44,3);
- DRAW(X+28,44,X+24,44,3);DRAW(X+24,44,X+24,1,3);
- { MAKES H}
- DRAW(X+48,1,X+64,1,3);DRAW(X+64,1,X+64,4,3);DRAW(X+64,4,X+52,4,3);DRAW(X+52,4,X+52,20,3);DRAW(X+52,20,X+56,20,3);
- DRAW(X+56,20,X+56,24,3);DRAW(X+56,24,X+52,24,3);DRAW(X+52,24,X+52,40,3);DRAW(X+52,40,X+64,40,3);DRAW(X+64,40,X+64,44,3);
- DRAW(X+64,44,X+48,44,3);DRAW(X+48,44,X+48,1,3);
- { MAKES E}
- SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
- END;
- Y:=Y+1
- END;
- FillShape(X+1,2,COLORFILL,3);
- FillShape(X+25,30,COLORFILL,3);
- FillShape(X+49,30,COLORFILL,3);
- GRAPHWINDOW(1,92,140,136);Y:=0;
- FOR X:=-160 TO 20 DO BEGIN
- IF Y=30 THEN BEGIN
- Y:=0;CLEARSCREEN;
- DRAW(X,1,X+16,1,3);DRAW(X+16,1,X+16,8,3);DRAW(X+16,8,X+12,8,3);DRAW(X+12,8,X+12,4,3);DRAW(X+12,4,X+4,4,3);
- DRAW(X+4,4,X+4,20,3);DRAW(X+4,20,X+16,20,3);DRAW(X+16,20,X+16,44,3);DRAW(X+16,44,X,144,3);DRAW(X,44,X,36,3);
- DRAW(X,36,X+4,36,3);DRAW(X+4,36,X+4,40,3);DRAW(X+4,40,X+12,40,3);DRAW(X+12,40,X+12,24,3);DRAW(X+12,24,X,24,3);
- DRAW(X,24,X,1,3);
- { MAKE S}
- DRAW(X+24,1,X+40,1,3);DRAW(X+40,1,X+40,4,3);DRAW(X+40,4,X+34,4,3);DRAW(X+34,4,X+34,44,3);
- DRAW(X+34,44,X+30,44,3);DRAW(X+30,44,X+30,4,3);DRAW(X+30,4,X+24,4,3);DRAW(X+24,4,X+24,1,3);
- { MAKES T}
- DRAW(X+48,1,X+64,1,3);DRAW(X+64,1,X+64,44,3);DRAW(X+64,44,X+48,44,3);DRAW(X+48,44,X+48,1,3);
- DRAW(X+52,4,X+60,4,3);DRAW(X+60,4,X+60,40,3);DRAW(X+60,40,X+52,40,3);DRAW(X+52,40,X+52,4,3);
- {MAKE O}
- DRAW(X+72,1,X+88,1,3);DRAW(X+88,1,X+88,8,3);DRAW(X+88,8,X+84,8,3);DRAW(X+84,8,X+84,4,3);
- DRAW(X+84,4,X+76,4,3);DRAW(X+76,4,X+76,40,3);DRAW(X+76,40,X+84,40,3);DRAW(X+84,40,X+84,36,3);
- DRAW(X+84,36,X+88,36,3);DRAW(X+88,36,X+88,44,3);DRAW(X+88,44,X+72,44,3);DRAW(X+72,44,X+72,1,3);
- {MAKE C}
- DRAW(X+96,1,X+100,1,3);DRAW(X+100,1,X+100,20,3);DRAW(X+100,20,X+108,1,3);DRAW(X+108,1,X+112,1,3);
- DRAW(X+112,1,X+104,22,3);DRAW(X+104,22,X+112,44,3);DRAW(X+112,44,X+108,44,3);DRAW(X+108,44,X+100,24,3);
- DRAW(X+100,24,X+100,44,3);DRAW(X+100,44,X+96,44,3);DRAW(X+96,44,X+96,1,3);
- {MAKE K}
- SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
- END;
- Y:=Y+1
- END;
- FillShape(X+1,2,COLORFILL,3);
- FillShape(X+25,2,COLORFILL,3);
- FillShape(X+49,2,COLORFILL,3);
- FillShape(X+73,2,COLORFILL,3);
- FillShape(X+97,2,COLORFILL,3);
- GRAPHWINDOW(144,92,320,136);Y:=0;
- FOR X:=46 DOWNTO -134 DO BEGIN
- IF Y=30 THEN BEGIN
- Y:=0;CLEARSCREEN;
- DRAW(X+144,1,X+160,1,3);DRAW(X+160,1,X+160,4,3);DRAW(X+160,4,X+154,4,3);DRAW(X+154,4,X+154,44,3);
- DRAW(X+154,44,X+150,44,3);DRAW(X+150,44,X+150,4,3);DRAW(X+150,4,X+144,4,3);DRAW(X+144,4,X+144,1,3);
- { MAKES T}
- DRAW(X+168,1,X+184,1,3);DRAW(X+184,1,X+184,22,3);DRAW(X+184,22,X+180,22,3);DRAW(X+180,22,X+184,44,3);
- DRAW(X+184,44,X+180,44,3);DRAW(X+180,44,X+176,22,3);DRAW(X+176,22,X+172,22,3);DRAW(X+172,22,X+172,44,3);
- DRAW(X+172,44,X+168,44,3);DRAW(X+168,44,X+168,1,3);DRAW(X+172,4,X+180,4,3);DRAW(X+180,4,X+180,20,3);
- DRAW(X+180,20,X+172,20,3);DRAW(X+172,20,X+172,4,3);
- {MAKE R}
- DRAW(X+192,44,X+192,1,3);DRAW(X+192,1,X+208,1,3);DRAW(X+208,1,X+208,44,3);DRAW(X+208,44,X+204,44,3);
- DRAW(X+204,44,X+204,30,3);DRAW(X+204,30,X+196,30,3);DRAW(X+196,30,X+196,44,3);DRAW(X+196,4,X+204,4,3);
- DRAW(X+204,4,X+204,26,3);DRAW(X+204,26,X+196,26,3);DRAW(X+196,26,X+196,4,3);
- {MAKE A}
- DRAW(X+216,1,X+228,1,3);DRAW(X+228,1,X+232,4,3);DRAW(X+232,4,X+232,40,3);DRAW(X+232,40,X+228,44,3);
- DRAW(X+228,44,X+216,44,3);DRAW(X+216,44,X+216,1,3);DRAW(X+220,4,X+224,4,3);DRAW(X+224,4,X+228,8,3);
- DRAW(X+228,8,X+228,36,3);DRAW(X+228,36,X+224,40,3);DRAW(X+224,40,X+220,40,3);DRAW(X+220,40,X+220,4,3);
- {MAKE D}
- DRAW(X+240,1,X+256,1,3);DRAW(X+256,1,X+256,4,3);DRAW(X+256,4,X+244,4,3);DRAW(X+244,4,X+244,20,3);
- DRAW(X+244,20,X+248,20,3);DRAW(X+248,20,X+248,24,3);DRAW(X+248,24,X+244,24,3);DRAW(X+244,24,X+244,40,3);
- DRAW(X+244,40,X+256,40,3);DRAW(X+256,40,X+256,44,3);DRAW(X+256,44,X+240,44,3);DRAW(X+240,44,X+240,1,3);
- { MAKES E}
- DRAW(X+264,1,X+280,1,3);DRAW(X+280,1,X+280,22,3);DRAW(X+280,22,X+276,22,3);DRAW(X+276,22,X+280,44,3);
- DRAW(X+280,44,X+276,44,3);DRAW(X+276,44,X+272,22,3);DRAW(X+272,22,X+268,22,3);DRAW(X+268,22,X+268,44,3);
- DRAW(X+268,44,X+264,44,3);DRAW(X+264,44,X+264,1,3);DRAW(X+268,4,X+276,4,3);DRAW(X+276,4,X+276,20,3);
- DRAW(X+276,20,X+268,20,3);DRAW(X+268,20,X+268,4,3);
- {MAKE R}
- SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;
- END;
- Y:=Y+1
- END;
- FillShape(X+145,2,COLORFILL,3);
- FillShape(X+169,2,COLORFILL,3);
- FillShape(X+193,2,COLORFILL,3);
- FillShape(X+217,2,COLORFILL,3);
- FillShape(X+241,2,COLORFILL,3);
- FillShape(X+265,2,COLORFILL,3);
- TOP:=0;
- ASSIGN(STOCKFILE,'STOCKS.DAT');
- RESET(STOCKFILE);
- READLN(STOCKFILE,DISCLAIM);STEPPER:=39;STARTSTR:=1;ENDSTR:=2;
- TEXTCOLOR(3);GOTOXY(9,24);WRITE('LOADING STOCK DATA FILES');
- GOTOXY(5,2);WRITE('Copyright 1985 by DSF Associates');
- GOTOXY(14,19);WRITE('Version 2.00');
- WINDOW(1,1,40,25);
- FOR X:=1 TO 32 DO BEGIN
- IF NOT EOF(STOCKFILE) THEN BEGIN
- IF (COLOR='Y') AND (ODD(X)) THEN TEXTCOLOR(2);
- IF (COLOR='N') AND (ODD(X)) THEN TEXTCOLOR(0);
- IF NOT ODD(X) THEN TEXTCOLOR(3);
- GOTOXY(9,24);WRITE('LOADING');TEXTCOLOR(3);
- READLN(STOCKFILE,NAME[X]);
- READLN(STOCKFILE,LONG[X]);
- READLN(STOCKFILE,SHORT[X]);
- READLN(STOCKFILE,CHORD[X]);
- READLN(STOCKFILE,SIGNALHISTORY[X]);
- TOP:=TOP+1;
- GOTOXY(STEPPER,21);WRITE(COPY(TICKER+TICKER1,STARTSTR,ENDSTR));
- GOTOXY(STEPPER,22);WRITE(COPY(TICKER2+TICKER3,STARTSTR,ENDSTR));
- ENDSTR:=ENDSTR+4;STEPPER:=STEPPER-4;IF STEPPER<1 THEN STEPPER:=1;
- IF ENDSTR>40 THEN ENDSTR:=40;
- IF ENDSTR=40 THEN STARTSTR:=STARTSTR+4;
- SOUND(50);DELAY(20);SOUND(500);DELAY(20);NOSOUND;SKIP:=0;
- FOR Y:=1 TO 30 DO BEGIN
- READLN(STOCKFILE,DATE[X,Y],HIGH[X,Y],LOW[X,Y],CLOSED[X,Y],VOLUME[X,Y],LONGAVG[X,Y],SHORTAVG[X,Y],SIGNAL[X,Y]) ;
- END;
- END;
- IF TOP<X THEN BEGIN
- NAME[X]:='';
- END;
- END;
- MONTH[1]:='JANUARY';MONTH[2]:='FEBRUARY';MONTH[3]:='MARCH';MONTH[4]:='APRIL';MONTH[5]:='MAY';MONTH[6]:='JUNE';
- MONTH[7]:='JULY';MONTH[8]:='AUGUST';MONTH[9]:='SEPTEMBER';MONTH[10]:='OCTOBER';MONTH[11]:='NOVEMBER';
- MONTH[12]:='DECEMBER';
- TEXTMODE(TMODE);TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);CLRSCR;
- PORT[$3D9]:=BLUE;
- NAMEIT:='MONEY.DAT';
- X3:=0;Y2:=0;Y3:=0;
- SCREENPRINT;
- IF X3<>10024 THEN HALT;
- X3:=0;Y2:=0;Y3:=0;
- SCREEN:='E';
- IF DISCLAIM=1 THEN BEGIN
- GOTOXY(1,4);
- WRITELN(' The STOCKTRADER is designed to assist the user in the decision making process');
- WRITELN;
- WRITELN(' involved in the buying and selling of stocks. As with all advise on stock');
- WRITELN;
- WRITELN(' transactions, the ultimate selection and decision to trade in securities is');
- WRITELN;
- WRITELN(' totally dependant on the views and knowledge of the individual investor.');
- WRITELN;
- TEXTCOLOR(LTRED);TEXTBACKGROUND(BLUE);
- WRITELN(' DSF Associates assume no liability in your use of this aid in the purchase');
- WRITELN(' ');
- WRITELN(' or sale of securities. Any gains or losses are totally dependant on your ');
- WRITELN(' ');
- WRITELN(' judgement and not the recommendation of this program. ');
- textcolor(YELLOW);Textbackground(BLUE);
- WRITELN(' ');
- WRITE(' It must be ');TEXTCOLOR(LTRED);TEXTBACKGROUND(BLUE);Write('CLEARLY');TEXTCOLOR(YELLOW);TEXTBACKGROUND(BLUE);
- WRITELN(' understood that this program is no substitute for exper-');
- WRITELN(' ');
- WRITELN(' ience and trading knowledge, nor is it designed to replace the experience ');
- WRITELN;
- WRITELN(' and advise of a good broker. ');
- WRITELN;WRITELN;
- WRITE(' THIS MESSAGE CAN BE CANCELED ON FUTURE RUNS BY PRESSING THE F2 KEY NOW. ');
- READ(KBD,GO);
- IF (GO=#27) AND KEYPRESSED THEN BEGIN
- READ(KBD,GO);
- IF (GO=#60) THEN BEGIN
- DISCLAIM:=0;
- END;
- END;
- CLRSCR;
- END;
- WHILE SCREEN<'N' BEGIN
- IF SCREEN='E' THEN BEGIN
- CLRSCR;DATEM:=0;DATED:=0;DATEY:=0;
- TEXTCOLOR(YELLOW);
- PORT[$3D9]:=BLUE;
- NAMEIT:='SCREENE.DAT';
- SCREENPRINT;
- TEXTCOLOR(WHITE+16);
- GOTOXY(32,2);WRITE('POST');
- TEXTCOLOR(LTRED);GOTOXY(29,12);Write('SEQUENTIALLY.');
- TEXTCOLOR(YELLOW);
- Y1:=1;
- WHILE Y1=1 DO BEGIN
- GOTOXY(37,23);READ(KBD,DATENUM);
- IF DATENUM=CHR(13) THEN Y1:=0;
- IF Y1=0 THEN DATEFLAG:=0 ELSE DATEFLAG:=1;
- IF Y1=1 THEN BEGIN
- WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEM:=Y2*10;
- GOTOXY(38,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEM:=DATEM + Y2;
- {GET AND PRINT MONTH - DATEM}
- IF (DATEM>12) OR (DATEM<1) THEN FLAG1:=1 ELSE FLAG1:=0;
- IF FLAG1=0 THEN BEGIN
- GOTOXY(41,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATED:=Y2*10;
- GOTOXY(42,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATED:=DATED + Y2;
- IF (DATED>31) OR (DATED<1) THEN FLAG1:=1 ELSE FLAG1:=0;
- END;
- {GET AND PRINT DAY - DATED}
- IF FLAG1=0 THEN BEGIN
- GOTOXY(45,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEY:=Y2*10;
- GOTOXY(46,23);READ(KBD,DATENUM);WRITE(DATENUM);VAL(DATENUM,Y2,Y3);DATEY:=DATEY + Y2;
- IF (DATEY>80) OR (DATEY<99) THEN Y1:=0 ELSE Y1:=1;
- {GET AND PRINT YEAR - DATEY}
- END;
- IF FLAG1=1 THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;GOTOXY(1,23);WRITELN(' ___/___/___ ');
- END;
- END;
- END;
- SCREEN:='M';SCREEN1:='A';UPDATECOUNT:=0;
- END;
- IF SCREEN='M' THEN BEGIN
- SCREEN:=SCREEN1;
- MENU;
- END;
- IF (SCREEN='A') AND (DATEFLAG=0) THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(15,25);WRITE('THERE IS A PROBLEM WITH THE DATE. PLEASE REENTER.');DELAY(2000);
- SCREEN:='E'
- END;
- IF (SCREEN='A') AND (DATEFLAG=1) THEN BEGIN
- TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
- STARTER:=19;CANCEL:=0;
- UPDATECOUNT:=UPDATECOUNT+1;
- IF UPDATECOUNT>TOP THEN UPDATECOUNT:=1;
- GOTOXY(45,23);WRITE('UPDATE HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO UPDATE ( ',NAME[UPDATECOUNT],' )');
- F3;
- STOCKSELECT;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<3 THEN BEGIN
- CANCEL:=0;CANCEL1:=0;CANCEL2:=0;CANCEL3:=0;
- IF STOCK='' THEN X:=UPDATECOUNT;
- WHILE CANCEL<>1 DO BEGIN
- CLRSCR;UPDATE;FLAG2:=0;RESTART:=0;
- TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
- UPDATEMSG;X1:=1;
- WHILE X1<5 DO BEGIN
- IF (CANCEL1<>1) OR (CANCEL2<>1) OR (CANCEL3<>1) THEN BEGIN
- IF X1=1 THEN BEGIN
- FLAG2:=0;CANCEL:=0;CANCEL1:=0;
- GOTOXY(20,24);WRITE('WHAT IS THIS DATE HIGH? ');
- READ(DAYHIGH);
- VAL(DAYHIGH,HIGHT,ERROR);
- IF DAYHIGH='n' THEN DAYHIGH:='N';
- IF DAYHIGH='N' THEN BEGIN
- HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
- CANCEL:=1;
- END;
- IF DAYHIGH='c' THEN DAYHIGH:='C';
- IF DAYHIGH='d' THEN DAYHIGH:='D';
- IF DAYHIGH='r' THEN DAYHIGH:='R';
- IF (DAYHIGH='D') OR (DAYHIGH='C') OR (DAYHIGH='R') THEN BEGIN
- CANCEL:=1;FLAG2:=1;
- IF DAYHIGH='R' THEN RESTART:=1
- END;
- IF CANCEL<>1 THEN BEGIN
- IF HIGHT<=0 THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,24);WRITE(ERASER);
- GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
- CANCEL1:=1;FLAG2:=1;
- END;
- END;
- IF (CANCEL<>1) AND (CANCEL1<>1) THEN BEGIN
- IF (HIGHT>(HIGH[X,30]*1.05)) OR (HIGHT<(HIGH[X,30]*0.95)) THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;GOTOXY(3,24);
- WRITE('TODAY''S HIGH DIFFERS FROM YESTERDAY''S HIGH BY MORE THEN 5% - OK (Y OR N)');
- Y2:=0;
- WHILE Y2=0 DO BEGIN
- READ (GO);
- IF (GO='N') OR (GO='n') OR (GO='Y') OR (GO='y') THEN BEGIN
- IF (GO='N') OR (GO='n') THEN BEGIN
- FLAG2:=1;CANCEL1:=1;
- END;
- Y2:=1;
- END;
- END;
- END;
- END;
- GOTOXY(1,24);WRITE(ERASER);
- IF (FLAG2=1) AND (CANCEL1=1) THEN X1:=1 ELSE X1:=2;
- IF DAYHIGH='N' THEN X1:=5;
- IF (FLAG2=1) AND (CANCEL=1) THEN X1:=5;
- END;
- END;
- IF (CANCEL<>1) OR (CANCEL2=1) THEN BEGIN
- IF X1=2 THEN BEGIN
- FLAG2:=0;CANCEL2:=0;
- GOTOXY(20,24);WRITE('WHAT IS THIS DATE LOW? ');
- READ(DAYLOW);
- VAL(DAYLOW,LOWT,ERROR);
- IF DAYLOW='n' THEN DAYLOW:='N';
- IF DAYLOW='N' THEN BEGIN
- HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
- CANCEL:=1;X1:=5;
- END;
- IF DAYLOW='c' THEN DAYLOW:='C';
- IF DAYLOW='d' THEN DAYLOW:='D';
- IF DAYLOW='r' THEN DAYLOW:='R';
- IF (DAYLOW='D') OR (DAYLOW='C') OR (DAYLOW='R') THEN BEGIN
- CANCEL:=1;FLAG2:=1;
- IF DAYLOW='R' THEN RESTART:=1;
- END;
- IF CANCEL<>1 THEN BEGIN
- IF LOWT<=0 THEN BEGIN
- GOTOXY(1,24);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
- FLAG2:=1;CANCEL2:=1;
- END;
- END;
- IF CANCEL<>1 THEN BEGIN
- IF LOWT>HIGHT THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;GOTOXY(16,24);
- WRITE('TODAYS LOW EXCEEDS TODAY HIGH - PLEASE REENTER.');DELAY(2000);
- FLAG2:=1;CANCEL1:=1;
- END;
- END;
- GOTOXY(1,24);WRITE(ERASER);
- IF (CANCEL2=1) AND (FLAG2=1) THEN X1:=2 ELSE X1:=3;
- IF DAYLOW='N' THEN X1:=5;
- IF (CANCEL=1) AND (FLAG2=1) THEN X1:=5;
- IF (CANCEL1=1) AND (FLAG2=1) THEN X1:=1;
- END;
- END;
- IF (CANCEL<>1) OR (CANCEL3=1) OR (CANCEL2<>1) THEN BEGIN
- IF X1=3 THEN BEGIN
- FLAG2:=0;CANCEL3:=0;
- GOTOXY(20,24);WRITE('WHAT IS THIS DATE CLOSE? ');
- READ(DAYCLOSE);
- IF DAYCLOSE='n' THEN DAYCLOSE:='N';
- IF DAYCLOSE='N' THEN BEGIN
- HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
- CANCEL:=1;X1:=5;
- END;
- VAL(DAYCLOSE,CLOSET,ERROR);
- IF DAYCLOSE='c' THEN DAYCLOSE:='C';
- IF DAYCLOSE='d' THEN DAYCLOSE:='D';
- IF DAYCLOSE='r' THEN DAYCLOSE:='R';
- IF (DAYCLOSE='D') OR (DAYCLOSE='C') OR (DAYCLOSE='R') THEN BEGIN
- CANCEL:=1;FLAG2:=1;
- IF DAYCLOSE='R' THEN RESTART:=1;
- END;
- IF CANCEL<>1 THEN BEGIN
- IF CLOSET<=0 THEN BEGIN
- GOTOXY(1,24);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(21,24);WRITE('STOCK VALUES OF ZERO ARE NOT ALLOWED.');DELAY(2000);
- CANCEL3:=1;FLAG2:=1;
- END;
- END;
- IF CANCEL<>1 THEN BEGIN
- IF (CLOSET>HIGHT) OR (CLOSET<LOWT) THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;GOTOXY(10,24);
- WRITE('TODAYS CLOSE IS GREATER THEN THE HIGH OR LESS THEN THE LOW.');DELAY(2000);
- CANCEL1:=1;FLAG2:=1
- END;
- END;
- GOTOXY(1,24);WRITE(ERASER);
- IF (CANCEL3=1) AND (FLAG2=1) THEN X1:=3 ELSE X1:=4;
- IF DAYCLOSE='N' THEN X1:=5;
- IF (CANCEL=1) AND (FLAG2=1) THEN X1:=5;
- IF (CANCEL1=1) AND (FLAG2=1) THEN X1:=1;
- END;
- END;
- IF (CANCEL<>1) OR (CANCEL2<>1) OR (CANCEL3<>1) THEN BEGIN
- IF X1=4 THEN BEGIN
- GOTOXY(20,24);WRITE('WHAT IS THIS DATE VOLUME? ');
- READ(DAYVOLUME);
- VAL(DAYVOLUME,VOLUMET,ERROR);
- IF DAYVOLUME='n' THEN DAYVOLUME:='N';
- IF DAYVOLUME='N' THEN BEGIN
- HIGHT:=HIGH[X,30];LOWT:=LOW[X,30];CLOSET:=CLOSED[X,30];VOLUMET:=0.001;
- CANCEL:=1;
- END;
- IF VOLUMET<=0 THEN VOLUMET:=0.001;
- IF DAYVOLUME='c' THEN DAYVOLUME:='C';
- IF DAYVOLUME='d' THEN DAYVOLUME:='D';
- IF DAYVOLUME='r' THEN DAYVOLUME:='R';
- IF (DAYVOLUME='D') OR (DAYVOLUME='C') OR (DAYVOLUME='R') THEN BEGIN
- CANCEL:=1;FLAG2:=1;
- IF DAYVOLUME='R' THEN RESTART:=1;
- END;
- GOTOXY(1,24);WRITE(ERASER);
- X1:=5;
- END;
- END;
- END;
- IF RESTART=1 THEN CANCEL:=0 ELSE CANCEL:=1;
- IF RESTART=1 THEN STARTER:=1;
- IF (DAYHIGH='D') OR (DAYLOW='D') OR (DAYCLOSE='D') OR (DAYVOLUME='D') THEN BEGIN
- FOR Y:=30 DOWNTO 2 DO BEGIN
- DATE[X,Y]:=DATE[X,Y-1];
- HIGH[X,Y]:=HIGH[X,Y-1];
- LOW[X,Y]:=LOW[X,Y-1];
- CLOSED[X,Y]:=CLOSED[X,Y-1];
- VOLUME[X,Y]:=VOLUME[X,Y-1];
- SHORTAVG[X,Y]:=SHORTAVG[X,Y-1];
- LONGAVG[X,Y]:=LONGAVG[X,Y-1];
- SIGNAL[X,Y]:=SIGNAL[X,Y-1];
- END;
- END;
- IF FLAG2=0 THEN BEGIN
- IF SIGNAL[X,1]<3 THEN SIGNALHISTORY[X]:=SIGNAL[X,1];
- FOR Y:=1 TO 29 DO BEGIN
- DATE[X,Y]:=DATE[X,Y+1];
- HIGH[X,Y]:=HIGH[X,Y+1];
- LOW[X,Y]:=LOW[X,Y+1];
- CLOSED[X,Y]:=CLOSED[X,Y+1];
- VOLUME[X,Y]:=VOLUME[X,Y+1];
- SHORTAVG[X,Y]:=SHORTAVG[X,Y+1];
- LONGAVG[X,Y]:=LONGAVG[X,Y+1];
- SIGNAL[X,Y]:=SIGNAL[X,Y+1];
- END;
- STR(DATEM,DATETEMP);
- IF DATEM<10 THEN DATETEMP:=' '+DATETEMP;
- DATE[X,30]:=DATETEMP+'/';
- STR(DATED,DATETEMP);
- IF DATED<10 THEN DATETEMP:=' '+DATETEMP;
- DATE[X,30]:=DATE[X,30]+DATETEMP+'/';
- STR(DATEY,DATETEMP);
- DATE[X,30]:=DATE[X,30]+DATETEMP;
- HIGH[X,30]:=HIGHT;
- HIGH[X,30]:=INT(HIGH[X,30]*100+0.5)/100;
- LOW[X,30]:=LOWT;
- LOW[X,30]:=INT(LOW[X,30]*100+0.5)/100;
- CLOSED[X,30]:=CLOSET;
- CLOSED[X,30]:=INT(CLOSED[X,30]*100+0.5)/100;
- VOLUME[X,30]:=VOLUMET;
- VOLUME[X,30]:=INT(VOLUME[X,30]*100+0.5)/100;
- SHORTAVG[X,30]:=((CLOSED[X,30]-SHORTAVG[X,29])*(2/(SHORT[X]+1)))+SHORTAVG[X,29];
- SHORTAVG[X,30]:=INT(SHORTAVG[X,30]*100+0.5)/100;
- LONGAVG[X,30]:=((CLOSED[X,30]-LONGAVG[X,29])*(2/(LONG[X]+1)))+LONGAVG[X,29];
- LONGAVG[X,30]:=INT(LONGAVG[X,30]*100+0.5)/100;
- FLAG2:=0;FLAG1:=0;
- FOR Y:=29 DOWNTO 1 DO BEGIN
- IF FLAG1=0 THEN BEGIN
- IF SIGNAL[X,Y]<3 THEN BEGIN
- FLAG2:=SIGNAL[X,Y];FLAG1:=1;
- END;
- END;
- END;
- SIGNAL[X,30]:=3;
- IF FLAG2=0 THEN FLAG2:=SIGNALHISTORY[X];
- IF FLAG2=2 THEN BEGIN
- IF (LONGAVG[X,30]-SHORTAVG[X,30])<=(LONGAVG[X,29]-SHORTAVG[X,29]) THEN BEGIN
- IF CLOSED[X,30]>=CLOSED[X,(30-CHORD[X])] THEN SIGNAL[X,30]:=1 ELSE SIGNAL[X,30]:=3;
- END;
- END;
- IF FLAG2=1 THEN BEGIN
- IF (LONGAVG[X,30]-SHORTAVG[X,30])>(LONGAVG[X,29]-SHORTAVG[X,29]) THEN BEGIN
- IF CLOSED[X,30]<CLOSED[X,(30-CHORD[X])] THEN SIGNAL[X,30]:=2 ELSE SIGNAL[X,30]:=3;
- END;
- END;
- END;
- END;
- FLAG2:=0;FLAG1:=0;
- SCREEN:='M';SCREEN1:='A'
- END;
- CANCEL:=0;
- END;
- IF SCREEN='B' THEN BEGIN
- GOTOXY(45,23);WRITE('ADD STOCK HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(18,25);WRITE('WHAT IS THE NEWSPAPER LISTING ? ( )');
- F3;
- STOP:=7;LOCATEX:=53;LOCATEY:=25;WRITER;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<2 THEN BEGIN
- IF TOP>31 THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,25);WRITE(' SORRY! YOU ARE AT THE MAXIMUM NUMBER OF STOCKS.');DELAY(2000);
- END;
- IF TOP<32 THEN BEGIN
- TOP:=TOP+1;
- FLAG1:=TOP;FLAG2:=0;
- FOR X:=(TOP-1) DOWNTO 1 DO BEGIN
- IF STOCK < NAME[X] THEN BEGIN
- FLAG1:=X;
- NAME[X+1]:=NAME[X];NAME[X]:=STOCK;LONG[X+1]:=LONG[X];LONG[X]:=0;SHORT[X+1]:=SHORT[X];SHORT[X]:=0;
- CHORD[X+1]:=CHORD[X];CHORD[X]:=0;SIGNALHISTORY[X+1]:=SIGNALHISTORY[X];SIGNALHISTORY[X]:=3;
- FOR Y:=1 TO 30 DO BEGIN
- DATE[X+1,Y]:=DATE[X,Y];HIGH[X+1,Y]:=HIGH[X,Y];LOW[X+1,Y]:=LOW[X,Y];
- CLOSED[X+1,Y]:=CLOSED[X,Y];VOLUME[X+1,Y]:=VOLUME[X,Y];LONGAVG[X+1,Y]:=LONGAVG[X,Y];
- SHORTAVG[X+1,Y]:=SHORTAVG[X,Y];SIGNAL[X+1,Y]:=SIGNAL[X,Y];
- END;
- END;
- END;
- IF FLAG1=TOP THEN BEGIN
- NAME[TOP]:=STOCK;LONG[TOP]:=0;SHORT[TOP]:=0;CHORD[TOP]:=0;SIGNALHISTORY[TOP]:=3;
- END;
- X:=FLAG1;FLAG1:=0;
- STOCKSTART;
- DISCLAIM:=1;
- END;
- SCREEN:='M';SCREEN1:='B'
- END;
- CANCEL:=0;
- END;
- IF SCREEN='C' THEN BEGIN
- GOTOXY(45,23);WRITE('DELETE STOCK HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(14,25);WRITE('WHICH STOCK DO YOU WISH TO DELETE ? ( )');
- F3;
- STOCKSELECT;STARTER:=19;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<2 THEN BEGIN
- X:=UPDATECOUNT;
- ENDSTR:=POS(' ',NAME[X]);IF ENDSTR=0 THEN ENDSTR:=8;
- IF ENDSTR<>0 THEN BEGIN
- STOCK:=COPY(NAME[X],1,ENDSTR-1);
- IF STOCK<>'DOW' THEN BEGIN
- FLAG1:=0;FLAG2:=0;
- FLAG2:=X;
- IF CLOSED[X,30]>CLOSED[X,29] THEN CLOSECOLOR:=LTGREEN;
- IF CLOSED[X,30]>CLOSED[X,29] THEN CLOSECOLOR:=LTRED;
- IF CLOSED[X,30]=CLOSED[X,29] THEN CLOSECOLOR:=WHITE;
- IF LONGAVG[X,30]>LONGAVG[X,29] THEN LONGCOLOR:=LTGREEN;
- IF LONGAVG[X,30]<LONGAVG[X,29] THEN LONGCOLOR:=LTRED;
- IF LONGAVG[X,30]=LONGAVG[X,29] THEN LONGCOLOR:=WHITE;
- CLRSCR;UPDATE;
- TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
- GOTOXY(9,22);WRITE('YOU ARE IN THE STOCK DELETE MODE');
- WRITE(' AND THE STOCK IS ');
- IF COLOR='N' THEN BEGIN
- TEXTCOLOR(0);TEXTBACKGROUND(7);
- END;
- IF COLOR='Y' THEN TEXTCOLOR(YELLOW);
- WRITELN(NAME[X]);TEXTCOLOR(WHITE);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(18,25);WRITE('IS THIS THE STOCK YOU WISH TO DELETE (Y/N). ');
- READ(GO);
- IF (GO='Y') OR (GO='y') THEN BEGIN
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(30,25);WRITE('ARE YOU SURE (Y/N). ');
- READ(GO);
- IF (GO='Y') OR (GO='y') THEN BEGIN
- IF FLAG2<TOP THEN BEGIN
- FOR X:=FLAG2 TO (TOP-1) DO BEGIN
- NAME[X]:=NAME[X+1];LONG[X]:=LONG[X+1];SHORT[X]:=SHORT[X+1];CHORD[X]:=CHORD[X+1];
- FOR Y:=1 TO 30 DO BEGIN
- DATE[X,Y]:=DATE[X+1,Y];HIGH[X,Y]:=HIGH[X+1,Y];LOW[X,Y]:=LOW[X+1,Y];
- CLOSED[X,Y]:=CLOSED[X+1,Y];VOLUME[X,Y]:=VOLUME[X+1,Y];LONGAVG[X,Y]:=LONGAVG[X+1,Y];
- SHORTAVG[X,Y]:=SHORTAVG[X+1,Y];SIGNAL[X,Y]:=SIGNAL[X+1,Y];
- END;
- END;
- END;
- NAME[TOP]:='';TOP:=TOP-1
- END;
- END;
- END;
- IF STOCK='DOW' THEN BEGIN
- SOUND(800);DELAY(400);NOSOUND;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(8,25);WRITE('THE DOW AVERAGE OR IT''S EQUIVALENT IS NECESSARY IN THE PROGRAM.');DELAY(2000);
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(19,25);WRITE('DO YOU WISH TO RESET THAT INDICATOR. (Y/N) ');
- READ(GO);
- IF (GO='Y') OR (GO='y') THEN FLAG2:=1;
- IF FLAG2=1 THEN BEGIN
- X:=UPDATECOUNT;FLAG2:=0;STOCKSTART;
- END;
- END;
- END;
- SCREEN:='M';SCREEN1:='C';
- END;
- CANCEL:=0;
- END;
- IF SCREEN='D' THEN BEGIN
- FOR X:=1 TO TOP DO BEGIN
- ENDSTR:=POS(' ',NAME[X]);
- IF ENDSTR<>0 THEN BEGIN
- STOCK:=COPY(NAME[X],1,ENDSTR-1);
- IF STOCK='DOW' THEN DOW:=X;
- END;
- END;
- WHILE SCREEN='D' DO BEGIN
- CANCEL:=0;
- CLRSCR;TEXTBACKGROUND(RED);GOTOXY(20,8);WRITELN(' ');
- GOTOXY(20,9);WRITE(' ');GOTOXY(59,9);WRITELN(' ');
- GOTOXY(20,10);WRITE(' ');GOTOXY(59,10);WRITELN(' ');
- GOTOXY(20,11);WRITE(' ');GOTOXY(59,11);WRITELN(' ');
- GOTOXY(20,12);WRITE(' ');GOTOXY(59,12);WRITELN(' ');
- GOTOXY(20,13);WRITE(' ');GOTOXY(59,13);WRITELN(' ');
- GOTOXY(20,14);WRITE(' ');GOTOXY(59,14);WRITELN(' ');
- GOTOXY(20,15);WRITE(' ');GOTOXY(59,15);WRITELN(' ');
- GOTOXY(20,16);WRITE(' ');GOTOXY(59,16);WRITELN(' ');
- GOTOXY(20,17);WRITELN(' ');
- TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);
- GOTOXY(21,10);WRITE(' TO RETURN TO THE MAIN MENU TYPE ');
- GOTOXY(21,11);WRITE(' THE CHARACTER M WHEN THE GRAPH ');
- GOTOXY(21,12);WRITE(' COMPLETES. IF YOU WISH TO VIEW ');
- GOTOXY(21,13);WRITE(' OTHER STOCKS PRESS RETURN. YOU ');
- GOTOXY(21,14);WRITE(' CAN THEN SELECT THE LISTED STOCK ');
- GOTOXY(21,15);WRITE(' WITH RETURN OR TYPE IN A NEW ONE. ');
- GOTOXY(80,25);
- UPDATECOUNT:=UPDATECOUNT+1;IF UPDATECOUNT>TOP THEN UPDATECOUNT:=1;
- GOTOXY(26,2);WRITE('F1..GRAPH STOCK HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);TEXTCOLOR(WHITE);
- GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO GRAPH ( ',NAME[UPDATECOUNT],' )');
- F3;
- STOCKSELECT;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<3 THEN BEGIN
- IF STOCK='' THEN X:=UPDATECOUNT;
- GRAPHMODE;GRAPHBACKGROUND(BLUE);
- LOWEST:=LOW[X,1];HIGHEST:=HIGH[X,1];AVERAGE:=(LOWEST+HIGHEST)/2;
- DOWPOINT:=CLOSED[DOW,1]/30;STARTPT1:=DOWPOINT-AVERAGE;
- FOR Y:=1 TO 30 DO BEGIN
- IF LOWEST>LOW[X,Y] THEN LOWEST:=LOW[X,Y];
- STARTPT:=DOWPOINT-STARTPT1;IF LOWEST>=STARTPT THEN LOWEST:=STARTPT;
- IF HIGHEST<HIGH[X,Y] THEN HIGHEST:=HIGH[X,Y];
- IF HIGHEST<=STARTPT+1 THEN HIGHEST:=STARTPT+1 ;
- END;
- LOWEST1:=LOWEST;
- AVERAGE:=AVERAGE+1;
- LOWEST:=ROUND((LOWEST)-0.5);
- IF LOWEST1<LOWEST THEN LOWEST:=LOWEST-1;
- HIGHEST1:=HIGHEST;
- HIGHEST:=ROUND(HIGHEST+0.5);
- IF HIGHEST1>HIGHEST THEN HIGHEST:=HIGHEST+1;
- GRAPHMID:=150/(HIGHEST-LOWEST);
- CLEARSCREEN;COLORSW:=0;DOWSW:=0;
- FOR Y:=1 TO 30 DO BEGIN
- START:=(CLOSED[X,Y]);
- DOWPOINT:=(CLOSED[DOW,Y]/30)-STARTPT1;
- UP:=ROUND((HIGH[X,Y]-START)*GRAPHMID);
- IF UP<0 THEN UP:=0;
- DOWN:=ROUND(((HIGH[X,Y]-START)*GRAPHMID))+ROUND(((START-LOW[X,Y])*GRAPHMID));
- IF DOWN<UP THEN DOWN:=UP;
- IF (UP<=1) AND (DOWN<=2) THEN BEGIN
- UP:=1;DOWN:=2;
- END;
- BACKUP:=DOWN-UP;
- X1:=4+10*(Y-1);Y1:=ROUND((HIGHEST-START)*GRAPHMID);X3:=X1;Y3:=Y1;
- COLR:=3;
- PLOT(X1+2,Y1,COLR);X2:=X1+2;
- Y2:=Y1+1;X1:=X2;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y1+1;X2:=X1+2;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1-2;
- DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1-2;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1+1;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;
- Y2:=Y1-UP;DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1-4;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1+DOWN;
- DRAW(X1,Y1,X1,Y2,COLR);Y1:=Y2;X2:=X1+4;DRAW(X1,Y1,X2,Y1,COLR);X1:=X2;Y2:=Y1-BACKUP;DRAW(X1,Y1,X1,Y2,COLR);
- COLR:=SIGNAL[X,Y];
- FILLHOLE;
- END;
- DOWSW:=0;
- IF X<>DOW THEN BEGIN
- FOR Y:=1 TO 30 DO BEGIN
- IF SIGNAL[DOW,Y]=1 THEN BEGIN
- X1:=((10*(Y-1))+4);Y1:=10;X3:=X1;Y3:=Y1;
- Y1:=Y1+2;PLOT(X1,Y1,3);X2:=X1+3;
- DRAW(X1,Y1,X2,Y1,3);Y2:=Y1-3;DRAW(X2,Y1,X1,Y2,3);Y1:=Y2+3;X2:=X1-3;DRAW(X1,Y2,X2,Y1,3);
- DRAW(X2,Y1,X1,Y1,3);
- FILLSHAPE(X3,Y3,CYAN,3);
- END;
- IF SIGNAL[DOW,Y]=2 THEN BEGIN
- X1:=((10*(Y-1))+3);Y1:=10;X3:=X1;Y3:=Y1;
- Y1:=Y1-2;PLOT(X1,Y1,3);X2:=X1-3;
- DRAW(X1,Y1,X2,Y1,3);Y2:=Y1+3;DRAW(X2,Y1,X1,Y2,3);Y1:=Y2-3;X2:=X1+3;DRAW(X1,Y2,X2,Y1,3);
- DRAW(X2,Y1,X1,Y1,3);
- FILLSHAPE(X3,Y3,MAGENTA,3);
- END;
- END;
- END;
- FOR Y:=1 TO 30 DO BEGIN
- IF HIGHVOL<VOLUME[X,Y] THEN HIGHVOL:=VOLUME[X,Y];
- END;
- HIGHVOL:=30/HIGHVOL;
- FOR Y:=1 TO 30 DO BEGIN
- VOLUMEST:= ROUND((VOLUME[X,Y]*HIGHVOL));
- X1:=(10*(Y-1)+4);Y1:=185;X3:=X1;Y3:=Y1;
- PLOT(X1,Y1,3);X2:=X1+2;
- DRAW(X1,Y1,X2,Y1,3);Y2:=Y1-VOLUMEST;DRAW(X2,Y1,X2,Y2,3);X1:=X2-4;
- DRAW(X2,Y2,X1,Y2,3);Y1:=Y2+VOLUMEST;DRAW(X1,Y2,X1,Y1,3);X2:=X1+2;DRAW(X1,Y1,X2,Y1,3);
- IF VOLUMEST>1 THEN FILLSHAPE(X3,Y3-1,MAGENTA,3);
- END;
- SKIP:=0;SKIP1:=0;
- FOR Y:=1 TO 29 DO BEGIN
- X1:=10*(Y-1)+4;Y1:=ROUND((HIGHEST-LONGAVG[X,Y])*GRAPHMID);Y2:=ROUND((HIGHEST-LONGAVG[X,Y+1])*GRAPHMID);
- Y3:=ROUND((Y1+Y2)/2);
- IF SKIP=0 THEN BEGIN
- DRAW(X1,Y1,X1+3,Y3,MAGENTA);CIRCLE(X1+5,Y3,2,MAGENTA);DRAW(X1+7,Y3,X1+10,Y2,MAGENTA);
- FILLSHAPE(X1+5,Y3,MAGENTA,MAGENTA);SKIP:=1;
- END;
- IF SKIP1=1 THEN BEGIN
- DRAW(X1,Y1,X1+10,Y2,MAGENTA);
- SKIP:=0;SKIP1:=0;
- END;
- IF SKIP=1 THEN SKIP1:=1;
- END;
- FOR Y:=1 TO 29 DO BEGIN
- X1:=10*(Y-1)+4;Y1:=ROUND((HIGHEST-SHORTAVG[X,Y])*GRAPHMID);Y2:=ROUND((HIGHEST-SHORTAVG[X,Y+1])*GRAPHMID);
- DRAW(X1,Y1,X1+10,Y2,3);
- END;
- IF (HIGHEST-LOWEST)*GRAPHMID<=175 THEN BEGIN
- Y1:=ROUND(((HIGHEST-LOWEST)*GRAPHMID));SETTER:=HIGHEST;SETTER1:=LOWEST;
- DRAWLINE;
- {DRAW BOTTOM OF GRAPH LINE & LABEL}
- END;
- Y1:=0;SETTER:=HIGHEST;SETTER1:=HIGHEST;
- DRAWLINE;
- {DRAW TOP OF GRAPH LINE & LABEL}
- GRAPHLINE:=LOWEST;
- IF HIGHEST-LOWEST<=4 THEN STEPPER:=1;
- IF HIGHEST-LOWEST>4 THEN STEPPER:=2;
- IF HIGHEST-LOWEST>10 THEN STEPPER:=5;
- IF HIGHEST-LOWEST>20 THEN STEPPER:=10;
- IF HIGHEST-LOWEST>50 THEN STEPPER:=15;
- WHILE GRAPHLINE+STEPPER<HIGHEST DO BEGIN
- GRAPHLINE:=GRAPHLINE+STEPPER;
- Y1:=ROUND((HIGHEST-GRAPHLINE)*GRAPHMID);SETTER:=HIGHEST;SETTER1:=GRAPHLINE;
- DRAWLINE;
- {DRAW INTERMEDIATE LINE}
- END;
- Y3:=0;
- FOR Y:=1 TO 25 DO BEGIN
- Y3:=Y3+1;
- IF Y3=5 THEN BEGIN
- DATEP:=DATE[X,Y];
- DATEP:=COPY(DATEP,1,5);
- IF COPY(DATEP,5,1)='/' THEN DATEP:=COPY(DATEP,1,4);
- WINDOW(1,24,40,25);GOTOXY(TRUNC(((10*(Y-1)+4)/8)-1),2);WRITE(DATEP);
- X1:=(10*(Y-1))+4;Y1:=180;Y2:=0;
- DRAW(X1,Y1,X1,Y2,3);
- Y3:=0;
- END;
- END;
- WINDOW(16,1,24,2);X1:=LENGTH(NAME[X]);X1:=TRUNC((8-X1)/2);GOTOXY(1+X1,1);
- WRITE(NAME[X]);
- READ(KBD,GO);
- TEXTMODE(3);TEXTBACKGROUND(BLUE);
- WINDOW(1,1,80,25);CLRSCR;
- PORT[$3D9]:=BLUE;
- GO:=UPCASE(GO);
- IF GO='M' THEN SCREEN:='M';SCREEN1:='A';
- IF GO<>'M' THEN SCREEN:='D';SCREEN1:='D';
- END;
- CANCEL:=0;
- END;
- END;
- IF SCREEN='F' THEN BEGIN
- TEXTMODE;TEXTBACKGROUND(BLUE);TEXTCOLOR(WHITE);
- CLRSCR;GOTOXY(20,8);TEXTBACKGROUND(RED);WRITELN(' ');
- GOTOXY(20,9);WRITE(' ');GOTOXY(59,9);WRITELN(' ');
- GOTOXY(20,10);WRITE(' ');GOTOXY(59,10);WRITELN(' ');
- GOTOXY(20,11);WRITE(' ');GOTOXY(59,11);WRITELN(' ');
- GOTOXY(20,12);WRITE(' ');GOTOXY(59,12);WRITELN(' ');
- GOTOXY(20,13);WRITE(' ');GOTOXY(59,13);WRITELN(' ');
- GOTOXY(20,14);WRITE(' ');GOTOXY(59,14);WRITELN(' ');
- GOTOXY(20,15);WRITE(' ');GOTOXY(59,15);WRITELN(' ');
- GOTOXY(20,16);WRITELN(' ');
- TEXTBACKGROUND(BLUE);TEXTCOLOR(YELLOW);
- GOTOXY(21,10);WRITE(' PLEASE INSURE THAT YOUR PRINTER ');
- GOTOXY(21,11);WRITE(' IS ON AND HAS BEEN SELECTED. MOST ');
- GOTOXY(21,12);WRITE(' PRINTERS WILL DISPLAY TWO GREEN ');
- GOTOXY(21,13);WRITE(' LIGHTS WHEN THE PRINTING CONDI- ');
- GOTOXY(21,14);WRITE(' TION IS CORRECT. ');
- STARTER:=1;CANCEL:=0;TEXTCOLOR(WHITE);
- GOTOXY(26,2);WRITE('F1..PRINT STOCK HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(15,25);WRITE('WHICH STOCK DO YOU WISH TO PRINT ( )');
- F3;
- STOCKSELECT;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<2 THEN BEGIN
- IF STOCK='' THEN BEGIN
- X:=UPDATECOUNT;
- WRITELN(LST,ENHANCED,DOUBLE);
- WRITELN(LST);
- WRITELN(LST);
- WRITELN(LST);
- WRITE(LST,' STOCK :',NAME[X]);
- WRITE(LST,' Current Price :');WRITE(LST,CLOSED[X,30]:4:2);
- WRITE(LST,' Current Average :');WRITELN(LST,LONGAVG[X,30]:4:2);
- WRITELN(LST);
- WRITELN(LST,' DATE HIGH LOW CLOSE VOLUME SH. AVER LG. AVER');
- WRITELN(LST,NONENHANCED,NONDOUBLE);
- FOR Y:=1 TO 30 DO BEGIN
- WRITE(LST,' ',DATE[X,Y],' ',HIGH[X,Y]:8:2,' ',LOW[X,Y]:8:2);
- IF CLOSED[X,Y]>CLOSED[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
- IF CLOSED[X,Y]<CLOSED[X,Y-1] THEN WRITE(LST,UNDERLINE);
- WRITE(LST,' ',CLOSED[X,Y]:8:2);
- WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
- WRITE(LST,' ',VOLUME[X,Y]:8:0);
- IF SHORTAVG[X,Y]>SHORTAVG[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
- IF SHORTAVG[X,Y]<SHORTAVG[X,Y-1] THEN WRITE(LST,UNDERLINE);
- WRITE(LST,' ',SHORTAVG[X,Y]:8:2);
- WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
- IF LONGAVG[X,Y]>LONGAVG[X,Y-1] THEN WRITE(LST,ENHANCED,DOUBLE);
- IF LONGAVG[X,Y]<LONGAVG[X,Y-1] THEN WRITE(LST,UNDERLINE);
- WRITELN(LST,' ',LONGAVG[X,Y]:8:2);
- WRITE(LST,NONUNDERLINE,NONENHANCED,NONDOUBLE);
- END;
- WRITELN(LST,CHR(12));
- END;
- END;CANCEL:=0;
- SCREEN:='M';SCREEN1:='F';
- END;
- IF SCREEN='H' THEN BEGIN
- GOTOXY(45,23);WRITE('SPLIT STOCK HELP SCREEN ');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(14,25);WRITE('WHICH STOCK DO YOU WISH TO SPLIT? ( )');
- F3;
- STOCKSELECT;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<2 THEN BEGIN
- X:=UPDATECOUNT;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(13,25);WRITE('THE SPLIT IS ( ) NEW SHARES FOR ( ) OLD SHARES.');
- GOTOXY(29,25);READ(Y3);GOTOXY(51,25);READ(Y2);
- FOR Y:=1 TO 30 DO BEGIN
- HIGH[X,Y]:=HIGH[X,Y]*Y2/Y3;LOW[X,Y]:=LOW[X,Y]*Y2/Y3;CLOSED[X,Y]:=CLOSED[X,Y]*Y2/Y3;VOLUME[X,Y]:=VOLUME[X,Y]*Y3/Y2;
- SHORTAVG[X,Y]:=SHORTAVG[X,Y]*Y2/Y3;LONGAVG[X,Y]:=LONGAVG[X,Y]*Y2/Y3;
- END;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(16,25);WRITE('ALL VALUES HAVE BEEN ADJUSTED FOR THE NEW SPLIT. ');DELAY(2000);
- SCREEN:='M';SCREEN1:='A';
- END;
- CANCEL:=0;
- END;
- IF SCREEN='I' THEN BEGIN
- NAMEIT:='SCREENI.DAT';SCREENPRINT;
- CLRSCR;TEXTCOLOR(YELLOW);
- IF COLOR='N' THEN TEXTCOLOR(GRAY);
- NAMEIT:='CONTROL.DAT';
- ASSIGN(STOCKFILE,NAMEIT);
- RESET(STOCKFILE);
- FOR Y1:=1 TO 24 DO BEGIN
- READLN(STOCKFILE,FILEWRITE);
- WRITELN(FILEWRITE);
- END;
- READLN(STOCKFILE,SCREEN);
- READLN(STOCKFILE,NAMEIT);
- CLOSE(STOCKFILE);
- FOR X:=12 TO 17 DO BEGIN
- GOTOXY(54,X);WRITE(PRINT[((X-12)*3)+1]);
- GOTOXY(62,X);WRITE(PRINT[((X-12)*3)+2]);
- GOTOXY(70,X);WRITE(PRINT[((X-12)*3)+3]);
- END;
- GOTOXY(54,20);WRITE(COLOR);
- FOR X:=12 TO 17 DO BEGIN
- LOCATEY:=X;LOCATEX:=53;STOP:=3;WRITER;
- IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+1],Y3);
- LOCATEX:=Y;LOCATEX:=61;STOP:=3;WRITER;
- IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+2],Y3);
- LOCATEX:=Y;LOCATEX:=69;STOP:=3;WRITER;
- IF STOCK<>'' THEN VAL(STOCK,PRINT[((X-12)*3)+3],Y3);
- END;
- FLAG1:=0;
- WHILE FLAG1=0 DO BEGIN
- GO:=COLOR;COLOR:=' ';
- GOTOXY(54,20);READ(KBD,COLOR);
- IF ORD(COLOR)>90 THEN COLOR:=CHR(ORD(COLOR)-32);
- IF COLOR=CHR(13) THEN COLOR:=GO;
- IF (COLOR='Y') OR (COLOR='N') THEN FLAG1:=1;
- IF FLAG1=0 THEN BEGIN
- SOUND(800);DELAY(500);NOSOUND;
- END;
- END;
- GOTOXY(54,20);WRITE(COLOR);
- ASSIGN(STOCKFILE,'CONFIG.DAT');
- REWRITE(STOCKFILE);
- WRITELN(STOCKFILE,COLOR);
- WRITELN(STOCKFILE,PRINT[1],' ',PRINT[2],' ',PRINT[3]);
- WRITELN(STOCKFILE,PRINT[4],' ',PRINT[5],' ',PRINT[6]);
- WRITELN(STOCKFILE,PRINT[7],' ',PRINT[8],' ',PRINT[9]);
- WRITELN(STOCKFILE,PRINT[10],' ',PRINT[11],' ',PRINT[12]);
- WRITELN(STOCKFILE,PRINT[13],' ',PRINT[14],' ',PRINT[15]);
- WRITELN(STOCKFILE,PRINT[16],' ',PRINT[17],' ',PRINT[18]);
- CLOSE(STOCKFILE);
- CHANGECOLOR;TEXTMODE;
- CANCEL:=0;SCREEN:='M';SCREEN1:='A';
- END;
- IF SCREEN='J' THEN BEGIN
- GOTOXY(45,23);WRITE('TRADING INDICATOR HELP SCREEN');
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(15,25);TEXTCOLOR(WHITE);WRITE('WHICH STOCK DO YOU WISH TO CHANGE ( )');
- F3;
- STOCKSELECT;
- GOTOXY(1,24);WRITE(ERASER);
- IF CANCEL<2 THEN BEGIN
- X:=UPDATECOUNT;
- IF FLAG1=1 THEN BEGIN
- SIGNALSET;FLAG1:=SIGNALHISTORY[X];
- FOR Y:=2 TO 30 DO BEGIN
- SHORTAVG[X,Y]:=((CLOSED[X,Y]-SHORTAVG[X,Y-1])*(2/(SHORT[X]+1))+SHORTAVG[X,Y-1]);
- SHORTAVG[X,Y]:=INT(SHORTAVG[X,Y]*100+0.5)/100;
- LONGAVG[X,Y]:=((CLOSED[X,Y]-LONGAVG[X,Y-1])*(2/(LONG[X]+1))+LONGAVG[X,Y-1]);
- LONGAVG[X,Y]:=INT(LONGAVG[X,Y]*100+0.5)/100;
- IF Y>CHORD[X] THEN SPAN:=CHORD[X];
- IF Y<CHORD[X] THEN SPAN:=Y-1;
- SIGNAL[X,Y]:=3;
- IF (LONGAVG[X,Y]-SHORTAVG[X,Y]<=LONGAVG[X,Y-1]-SHORTAVG[X,Y-1]) THEN BEGIN
- IF CLOSED[X,Y]>=CLOSED[X,Y-SPAN] THEN BEGIN
- IF FLAG1=2 THEN BEGIN
- SIGNAL[X,Y]:=1;FLAG1:=1;FLAG2:=1;
- END;
- END;
- END;
- IF (LONGAVG[X,Y]-SHORTAVG[X,Y]>LONGAVG[X,Y-1]-SHORTAVG[X,Y-1]) THEN BEGIN
- IF CLOSED[X,Y]<CLOSED[X,Y-SPAN] THEN BEGIN
- IF (FLAG1=1) AND (FLAG2=0) THEN BEGIN
- SIGNAL[X,Y]:=2;FLAG1:=2;
- END;
- END;
- FLAG2:=0;
- END;
- END;
- GOTOXY(1,25);WRITE(ERASER);
- GOTOXY(27,25);WRITE('RECALCULATION COMPLETED.');DELAY(500);
- END;
- SCREEN:='M';SCREEN1:='J';
- END;
- CANCEL:=0;
- END;
- IF (SCREEN='G') OR (SCREEN='K') THEN BEGIN
- CLRSCR;GOTOXY(29,12);TEXTCOLOR(WHITE+16);WRITE('WRITING');TEXTCOLOR(WHITE);WRITELN(' TO STOCK FILE');
- GOTOXY(80,25);
- ASSIGN(STOCKFILE,'STOCKS.DAT');
- REWRITE(STOCKFILE);
- WRITELN(STOCKFILE,DISCLAIM);
- FOR X:=1 TO TOP DO BEGIN
- WRITELN(STOCKFILE,NAME[X]);
- WRITELN(STOCKFILE,LONG[X]);
- WRITELN(STOCKFILE,SHORT[X]);
- WRITELN(STOCKFILE,CHORD[X]);
- WRITELN(STOCKFILE,SIGNALHISTORY[X]);
- FOR Y:=1 TO 30 DO BEGIN
- WRITE(STOCKFILE,DATE[X,Y],' ',HIGH[X,Y]:8:2,' ',LOW[X,Y]:8:2,' ',CLOSED[X,Y]:8:2,' ',VOLUME[X,Y]:8:0);
- WRITELN(STOCKFILE,' ',LONGAVG[X,Y]:8:2,' ',SHORTAVG[X,Y]:8:2,' ',SIGNAL[X,Y]) ;
- END;
- END;
- CLOSE(STOCKFILE);
- IF SCREEN='G' THEN SCREEN:='M';SCREEN1:='A';
- IF SCREEN='K' THEN SCREEN:='O';CLRSCR;
- END;
- END;
- END.